home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagd_f.zip / FAQ.SWG / 0003_Strings, Compiler, Output.pas < prev    next >
Pascal/Delphi Source File  |  1993-05-28  |  4KB  |  91 lines

  1. PASCAL.FAQ             Frequently asked questions about Pascal
  2.  
  3. The aim of this document is to give answers to frequently asked
  4. questions in the pascal echo. Thumb rules before asking for help are to
  5. look in the manuals and in the online help first. Many problems can be
  6. solved by just looking into either / both of them. Here are some
  7. topics, that come very often in the Pascal Echo.
  8.  
  9.                                  Part I
  10.        #1: Changing the case of strings
  11.        #2: Compiler errors
  12.        #3: Redirection of output
  13.  
  14. ---------------------------------------------------------------------
  15.                                #1 Strings
  16.  
  17. Q1: How do I access a single char in a string ?
  18. Q2: How can I make a string all upper cases ?
  19.  
  20. A1: A string is an Array[0..255] of Char, where the 0th char is the
  21.     length of the string. To access any character in the string, you can
  22.     write
  23.  
  24.     MyChar := String[ I ];
  25.  
  26. A2: To map a single character to uppercase, you can use the UpCase()
  27.     function of the run time library. To turn a whole string into upper
  28.     cases, just use this function :
  29.  
  30. Function UpperCase( const S : String ) : String;
  31. Var I : Integer;
  32. Begin
  33.   { first store the length in the result }
  34.   UpperCase[ 0 ] := S[ 0 ]
  35.   { now translate each char in S into a upper case char in UpperCase }
  36.   For I := 1 to Length( S ) do
  37.     UpperCase[ I ] := UpCase( S[ I ]);
  38. End;
  39.  
  40. There is a assembler implementation in the manuals ( the linking
  41. assembly language chaprt ), and there are many other optimized upper
  42. case routines out there.
  43.  
  44. ---------------------------------------------------------------------
  45.                            #2 Compiler Errors
  46.  
  47. Q1: I get a "Code segment too large" error. How can I fix it ?
  48. Q2: I get a "Data segment too large" error. How can I fix it ?
  49.  
  50. A1: This error means, that you have more than 64K code in one part
  51.     of your program. To reduce the size of this code segment, you need
  52.     to move parts of it into other units. This is possible to virtually
  53.     unlimited units.
  54.  
  55. A2: This error means, that you have more than 64K data in your program.
  56.     You need to put some data on the heap ( -> GetMem / FreeMem / New
  57.     / Dispose ) or to reduce your global data and make it local data on
  58.     the stack.
  59.  
  60. ---------------------------------------------------------------------
  61.                         #3 Redirection of output
  62.  
  63. Q1: How can I make the output of my program redirectable under DOS ?
  64.  
  65. A1: In general, the output of TP programs _is_ redirectable, except if
  66.     you use the CRT unit. Then you need to either reassign output to
  67.     '' or to declare a Text variable called for example ReOutput ( for
  68.     Redirectable Output ), and write the output to it.
  69.  
  70. Example :
  71.  
  72. Uses CRT;
  73.  
  74. Begin
  75.   WriteLn( 'This will always show up. Just a copyright.' );
  76.   Assign( Output, '' );
  77.   Rewrite( Output );
  78.   WriteLn( 'This is redirectable.' );
  79.   AssignCRT( Output );
  80.   Rewrite( Output );
  81.   WriteLn( 'And this will alyways show up again.' );
  82. End.
  83.  
  84. There are some myths that setting DirectVideo to False would result in
  85. redirectable output even when using CRT, or that TP _always_ writes
  86. directly to the screen, and that TP output is _never_ redirectable. You
  87. can ignore thos myths, TP writes to the screen using DOS, _except_ if
  88. you use the unit CRT. Then TP writes directly to the screen. If you set
  89. the variable DirectVideo to False, TP uses BIOS calls to write to the
  90. screen.
  91.